#define _CRT_SECURE_NO_WARNINGS 1.
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;

//template <class T>
//void Swap(T & left,T & right)
//{
//	T tmp = left;
//	left = right;
//	right = tmp;
//
//}

//template<class T>
//T Add(const T& left, const T& right)
//{
//	return left + right;
//}

//int main()
//{
//	int a = 10;
//	int b = 20;
//	double c = 20.66;
//	double d = 30.77;
//	//Swap(a, b);
//	Add(a, b);
//	cout << Add<int>(a, c) << endl;
//	cout << Add<double>(b, d) << endl;
//
//	return 0;
//}

//template<class T>
//class Stack
//{
//public :
//	Stack(int capacity = 4)
//	{
//		_a = new T[_capacity];
//		_top = 0;
//		_capacity = capacity;
//	}
//	~Stack()
//	{
//		delete[] _a;
//		_top = _capacity = 0;
//	}
//
//
//private:
//	T* _a;
//	size_t _top;
//	size_t _capacity;
//};
//
//int main()
//{
//	Stack <int> st;
//
//	return 0;
//}

//int main()
//{
//	string s1;
//	string s2 = "apple";
//
//	/*for (int i = 0; i < s2.size(); ++i)
//	{
//		s2[i]++;
//	}*/
//
//	for (int i = 0; i < s2.size(); ++i)
//	{
//		cout << s2[i] << " ";
//	}
//
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//
//	string s;
//	size_t sz = s.capacity();
//	//cout << "capacity changed: " << sz << '\n';
//	s.reserve(100);
//	cout << "making s grow:\n";
//	for (int i = 0; i < 100; ++i)
//	{
//		s.push_back('c');
//		if (sz != s.capacity())
//		{
//			sz = s.capacity();
//			cout << "capacity changed: " << sz << '\n';
//		}
//	}
//	s.resize(50,'a');
//	cout << s.size() << endl;
//
//	return 0;
//}

//int main()
//{
//	string s1("hello ");
//	s1 += "world";
//	cout << s1 << endl;
//
//	return 0;
//}

//int main()
//{
//	string s1(10,'*');
//	cout << s1 << endl;
//	string s2("hello world");
//	string s3(s2, 6);
//	cout << s3 << endl;
//	return 0;
//}

//int main()
//{
//	
//	
//	string s1("123456789");
//	string::iterator it = s1.begin();
//	while (it != s1.end())
//	{
//		cout << *it << endl;
//		++it;
//	}
//	cout << endl;
//	for (auto ch : s1)
//	{
//		cout << ch << endl;
//	}
//	cout << endl;
//
//	for (int i = 0; i < s1.size(); ++i)
//	{
//		cout << s1[i] << endl;
//	}
//	cout << endl;
//
//	return 0;
//}

